﻿using System.Collections.Generic;

namespace Common.Models
{
    /// <summary>
    /// 板材切割输出
    /// </summary>
    public class Output :IOutput
    {
        #region 属性
        /// <summary>
        /// 板材长
        /// </summary>
        public double Length { get; set; }
        /// <summary>
        /// 板材宽
        /// </summary>
        public double Width { get; set; }
        /// <summary>
        /// 毛坯种类数
        /// </summary>
        public int Num { get; set; }
        /// <summary>
        /// 毛坯需求
        /// </summary>
        public int[] Demand { get; set; }
        /// <summary>
        /// 毛坯直径
        /// </summary>
        public double[] Diameter { get; set; }
        /// <summary>
        /// 排样方式种类数
        /// </summary>
        public int PatternNum { get; set; }
        /// <summary>
        /// 每种排样消耗板材数量
        /// </summary>
        public int[] PlateNum { get; set; }
        /// <summary>
        /// 消耗板材张数
        /// </summary>
        public int TotalPlateNum { get; set; }
        /// <summary>
        /// 每种排样各毛坯使用数
        /// </summary>
        public List<int[]> DiaNum { get; set; }
        /// <summary>
        /// 所有椭圆
        /// </summary>
        public List<int[]> Ellipses { get; set; }
        /// <summary>
        /// 所有直线
        /// </summary>
        public List<int[]> Lines { get; set; }
        /// <summary>
        /// 所有矩形
        /// </summary>
        public List<int[]> Rectangles { get; set; }
        /// <summary>
        /// 排样计算数据
        /// </summary>
        public string Data { get; set; }
        /// <summary>
        /// 排样计算结果
        /// </summary>
        public string Result { get; set; }
        /// <summary>
        /// 利用率
        /// </summary>
        public double UtilizationRate { get; set; }
        /// <summary>
        /// 排样方式
        /// </summary>
        public List<List<int[]>> Plate { get; set; }
        /// <summary>
        /// 所有排样方式
        /// </summary>
        public List<List<List<int[]>>> Plates { get; set; }

        /// <summary>
        /// 板材下的说明
        /// </summary>
        public List<string> PlateRemark { get; set; }
        #endregion
    }
    /// <summary>
    /// 板材切割输出模型接口
    /// </summary>
    public interface IOutput
    {
        #region 属性
        /// <summary>
        /// 板材长
        /// </summary>
        double Length { get; set; }
        /// <summary>
        /// 板材宽
        /// </summary>
        double Width { get; set; }
        /// <summary>
        /// 毛坯种类数
        /// </summary>
        int Num { get; set; }
        /// <summary>
        /// 毛坯需求
        /// </summary>
        int[] Demand { get; set; }
        /// <summary>
        /// 毛坯直径
        /// </summary>
        double[] Diameter { get; set; }

        /// <summary>
        /// 每种排样的板材数量
        /// </summary>
        int[] PlateNum { get; set; }
        /// <summary>
        /// 所有板材数量
        /// </summary>
        int TotalPlateNum { get; set; }
        /// <summary>
        /// 每种排样各毛坯使用数
        /// </summary>
        List<int[]> DiaNum { get; set; }
        /// <summary>
        /// 所有椭圆
        /// </summary>
        List<int[]> Ellipses { get; set; }
        /// <summary>
        /// 所有直线
        /// </summary>
        List<int[]> Lines { get; set; }
        /// <summary>
        /// 所有矩形
        /// </summary>
        List<int[]> Rectangles { get; set; }
        /// <summary>
        /// 排样计算数据
        /// </summary>
        string Data { get; set; }
        /// <summary>
        /// 利用率
        /// </summary>
        double UtilizationRate { get; set; }
        /// <summary>
        /// 排样方式
        /// </summary>
        List<List<int[]>> Plate { get; set; }
        /// <summary>
        /// 所有排样方式
        /// </summary>
        List<List<List<int[]>>> Plates { get; set; }
        #endregion

    }
}
